package com.indeep.user.utils;

public class PhoneNumberValidator {
    // 验证手机号的正则表达式
    private static final String PHONE_NUMBER_REGEX = "^(1[3-9]\\d{9})$";

    // 合法的号码段（示例数据，根据实际情况进行更新）
    private static final String[] VALID_PREFIXES = {
            "13", "14", "15", "16", "17", "18", "19"
    };

    // 特殊号码列表（示例数据，根据实际情况进行更新）
    private static final String[] SPECIAL_NUMBERS = {
            "95588", "10086", "10010"
    };

    /**
     * 校验手机号是否合法
     *
     * @param phoneNumber 要校验的手机号
     * @return true表示手机号合法，false表示手机号不合法
     */
    public static boolean isValidPhoneNumber(String phoneNumber) {
        if (phoneNumber == null || phoneNumber.isEmpty()) {
            return false;
        }

        // 校验手机号格式
        if (!phoneNumber.matches(PHONE_NUMBER_REGEX)) {
            return false;
        }

        // 校验号码段是否合法
        String prefix = phoneNumber.substring(0, 2);
        boolean validPrefix = false;
        for (String validPrefixStr : VALID_PREFIXES) {
            if (validPrefixStr.equals(prefix)) {
                validPrefix = true;
                break;
            }
        }

        if (!validPrefix) {
            return false;
        }

        // 校验是否为特殊号码
        for (String specialNumber : SPECIAL_NUMBERS) {
            if (phoneNumber.equals(specialNumber)) {
                return false;
            }
        }

        // 手机号校验通过
        return true;
    }
}
